package com.orangelife.service.propFeeReceipt;

import java.util.List;
import java.util.Map;

import com.orangelife.exception.AppBizException;
import com.orangelife.service.propFeeReceipt.model.PropFeeReceiptDto;

/*****************************************************************
 * Copyright(C) ORANGELIFE Corporation 2015. All Rights Reserved.
 *****************************************************************/
/*
 * ============================================================== 功能名
 * PropFeeReceipt类的 service层的增删改查
 * 
 * @author @author
 * 
 * @version 1.1.0
 * 
 * @date 2016-12-12 15:47:46
 * ==============================================================
 */
public interface IPropFeeReceiptService {

	/**
	 * 用途 添加propFeeReceipt（橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-12-12 15:47:46
	 * @param propFeeReceipt
	 * @return
	 * @throws AppBizException
	 */
	public int addPropFeeReceipt(PropFeeReceiptDto propFeeReceipt)
			throws AppBizException;

	/**
	 * 用途 修改propFeeReceipt（橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-12-12 15:47:46
	 * @param propFeeReceipt
	 * @return
	 * @throws AppBizException
	 */

	public int editPropFeeReceipt(PropFeeReceiptDto propFeeReceipt)
			throws AppBizException;

	/**
	 * 用途 单个查询 （橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-12-12 15:47:46
	 * @param propFeeReceiptID
	 * @return
	 * @throws AppBizException
	 */

	public PropFeeReceiptDto findPropFeeReceiptByID(String propFeeReceiptID)
			throws AppBizException;

	/**
	 * 用途 逻辑删除（橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-12-12 15:47:46
	 * @param propFeeReceiptID
	 * @return
	 * @throws AppBizException
	 */
	public int deletePropFeeReceiptByLogic(String propFeeReceiptID)
			throws AppBizException;

	/**
	 * 用途 查询列表 （橙子生活）
	 * 
	 * @author
	 * @date 创建时间 2016-12-12 15:47:46
	 * @param search
	 *            搜索内容
	 * @param tsCreate
	 *            创建时间
	 * @param pageNo
	 *            页码
	 * @param pageSize
	 *            页面大小
	 * @return
	 * @throws AppBizExceptionception
	 */
	public List<Map<String, Object>> findPropFeeReceiptByPage(String tsCreate,
			String search, int pageNo, int pageSize) throws AppBizException;

	/**
	 * 用途 查询列表（返回对对象）（橙子生活）
	 * 
	 * @author
	 * @date 创建时间 2016-12-12 15:47:46
	 * @param servletRequest
	 * @param search
	 *            搜索内容
	 * @param tsCreate
	 *            创建时间
	 * @param pageNo
	 *            页码
	 * @param pageSize
	 *            页面大小
	 * @return
	 * @throws AppBizException
	 */
	public List<PropFeeReceiptDto> getPropFeeReceiptByPage(String tsCreate,
			String search, int pageNo, int pageSize) throws AppBizException;

	/**
	 * 用途 根据一张表内的所有ID查询propFeeReceipt（橙子生活）(返回Map<String, Object>)
	 * 
	 * @author
	 * @date 创建时间 2016-12-12 15:47:46
	 * @param receiptID
	 *            (非必填字段)
	 * 
	 * @param receiptType
	 *            (非必填字段)
	 * 
	 * @param status
	 *            (非必填字段)
	 * 
	 * @param pmID
	 *            (非必填字段)
	 * 
	 * @param commID
	 *            (非必填字段)
	 * 
	 * @param apartmentID
	 *            (非必填字段)
	 * @return
	 * @throws AppBizException
	 */

	public List<Map<String, Object>> selectPropFeeReceiptByRelevantID(
			String receiptID, String receiptType, String status, String pmID,
			String commID, String apartmentID) throws AppBizException;

	/**
	 * 用途 根据一张表内的所有ID查询propFeeReceipt（橙子生活）(返回对象)
	 * 
	 * @author
	 * @date 创建时间 2016-12-12 15:47:46
	 * @param receiptID
	 *            (非必填字段)
	 * 
	 * @param receiptType
	 *            (非必填字段)
	 * 
	 * @param status
	 *            (非必填字段)
	 * 
	 * @param pmID
	 *            (非必填字段)
	 * 
	 * @param commID
	 *            (非必填字段)
	 * 
	 * @param apartmentID
	 *            (非必填字段)
	 * @return
	 * @throws AppBizException
	 */

	public List<PropFeeReceiptDto> findPropFeeReceiptByRelevantID(
			String receiptID, String receiptType, String status, String pmID,
			String commID, String apartmentID) throws AppBizException;

	/**
	 * 用途 批量查询propFeeReceipt（橙子生活）(返回对象)
	 * 
	 * @author
	 * @date 创建时间 2016-12-12 15:47:46
	 * 
	 * @return
	 * @throws AppBizException
	 */

	public List<PropFeeReceiptDto> bauthfindPropFeeReceipt(
			List<String> propFeeReceiptIDs) throws AppBizException;

	/**
	 * 用途 批量查询propFeeReceipt（橙子生活）(返回Map)
	 * 
	 * @author
	 * @date 创建时间 2016-12-12 15:47:46
	 * 
	 * @return
	 * @throws AppBizException
	 */

	public List<Map<String, Object>> bauthfindPropFeeReceiptByMap(
			Map<String, Object> propFeeReceipt) throws AppBizException;

	/**
	 * 用途 清除
	 * 
	 * @author
	 * @date 创建时间 2016-12-12 15:47:46
	 * 
	 * @return
	 * @throws AppBizException
	 */

	public void clearCache() throws AppBizException;

	/****
	 * 创建关联信息
	 * 
	 * @param propFeeReceipt
	 * @return
	 * @throws AppBizException
	 */
	public Map<String, Object> addPropFeeReceipts(
			PropFeeReceiptDto propFeeReceipt) throws AppBizException;

	/**
	 * 查询详情
	 * 
	 * @param linkID
	 * @return
	 * @throws AppBizException
	 */
	public PropFeeReceiptDto findPropFeeReceipt(String linkID, String type)
			throws AppBizException;

	/***
	 * 作废收据
	 * 
	 * @param propFeeReceipt
	 * @return
	 * @throws AppBizException
	 */
	public Map<String, Object> nullifyReceipt(PropFeeReceiptDto propFeeReceipt)
			throws AppBizException;

	/***
	 * 查询信息
	 * 
	 * @param type
	 * @param apartmentID
	 * @param tsCreate
	 * @param search
	 * @param pageNo
	 * @param pageSize
	 * @return
	 * @throws AppBizException
	 */
	public List<Map<String, Object>> findPropFeeReceiptInfo(String type,
			String apartmentID, String tsCreate, String search, int pageNo,
			int pageSize) throws AppBizException;

	/***
	 * 
	 * @param apartmentID
	 * @param tsCreate
	 * @param search
	 * @param pageNo
	 * @param pageSize
	 * @return
	 * @throws AppBizException
	 */
	public List<Map<String, Object>> getMonthNoReNum(String rType, String type,
			String apartmentID, String feeDate, String tsCreate, String search,
			int pageNo, int pageSize) throws AppBizException;

	public List<Map<String, Object>> getMonthReDetail(
			Map<String, Object> propFeeReceipt) throws AppBizException;

	/***
	 * 修改支付类型
	 * 
	 * @param propFeeReceipt
	 * @return
	 * @throws AppBizException
	 */
	public int editPayWay(PropFeeReceiptDto propFeeReceipt)
			throws AppBizException;

	/***
	 * 查询已经使用的收据
	 * 
	 * @param propFeeReceipt
	 * @return
	 * @throws AppBizException
	 */
	public List<Map<String, Object>> findHasUseReceiptNum(
			Map<String, Object> propFeeReceipt, int pageNo, int pageSize)
			throws AppBizException;

	public Map<String, Object> invalidReceipt(PropFeeReceiptDto propFeeReceipt)
			throws AppBizException;

	public List<Map<String, Object>> bauthpropFeeReceipt(
			Map<String, Object> propFeeReceipt) throws AppBizException;

}